package cz.muni.fi.pa165.webservice;

import cz.muni.fi.pa165.api.dto.PickerDTO;

/**
 * PickerWebServiceAPI interface provides a set of methods for manipulation
 * and retrieval of pickers using a web service
 * 
 * @author Matej Cimbora
 */
public interface PickerWebServiceAPI {

    /**
     * Creates a new picker
     *
     * @param pickerDTO Picker to be created
     */
    public void createPicker(PickerDTO pickerDTO);

    /**
     * Retrieves picker by id
     *
     * @param id Picker's id
     * @return DTO object representing picker with given id
     */
    public PickerDTO getPicker(String id);

    /**
     * Updates a picker
     *
     * @param pickerDTO Picker to be updated
     */
    public void updatePicker(PickerDTO pickerDTO);
    
    /**
     * Removes a picker
     *
     * @param pickerDTO Picker to be removed
     */
    public void removePicker(PickerDTO pickerDTO);

    /**
     * Retrieves all existing pickers
     *
     * @return Array containing all existing pickers
     */
    public PickerDTO[] retrieveAllPickers();

    /**
     * Retrieves all existing pickers with given last name
     *
     * @param lastName Pickers' last name
     * @return Array containing all pickers with given last name
     */
    public PickerDTO[] retrieveAllPickersByLastName(String name);

    /**
     * Retrieves picker by his unique nickname
     *
     * @param nickName Picker's nickname
     * @return DTO object representing picker with given nickname
     */
    public PickerDTO retrievePickerByNickName(String name);

    /**
     * Retrieves all existing pickers with given first name
     *
     * @param firstName Pickers' first name
     * @return Array containing all pickers with given first name
     */
    public PickerDTO[] retrievePickersByFirstName(String name);

    
}
